Файл: VampusWorld.txt

Дата: 10.04.2014

1: * Мир вампуса
2: * Источник: Стюарт Рассел,Питер Норвиг.Искусственный интеллект.Современный подход.2-е издание.
3: * Москва,Издательский дом "Вильямс",2006г. Стр.286.
4: * Программа КОНЦЕПТ, 24.04.2010-15.05.2011, www.gendoc.ru
5:
6: * Глобальные параметры протяженности мира
7: присвоить МИР_ВЫСОТА 4 МИР_ШИРИНА 4  
8: присвоить цвет_стрелка 11 цвет_вампуса  10 цвет_ямы 9 цвет_золота 12 цвет_пусто 16
9:
10: функция Есть_в_квадрате? высота ширина объект
11:   память локальный ответ
12:   присвоить ответ [$ложь]
13:
14:   если (память существует $результат "МИР;[высота];[ширина]" )
15:     если (множество и $результат "[МИР;[высота];[ширина]][объект] ) == [объект]
16:       присвоить ответ [$истина]
17:     конец
18:   конец
19:   присвоить $результат [ответ]
20: возврат
21:
22: функция Есть_в_окрестности? высота ширина объект
23:   память локальный ответ
24:   присвоить ответ [$ложь]
25:
26:   если (Есть_в_квадрате? [высота] (вычислить - $результат  [ширина] 1 ) [объект] )
27:     присвоить ответ [$истина]
28:   конец
29:   если (Есть_в_квадрате? [высота] (вычислить + $результат  [ширина] 1 ) [объект] )
30:     присвоить ответ [$истина]
31:   конец
32:   если (Есть_в_квадрате? (вычислить - $результат [высота] 1 )  [ширина] [объект] )
33:     присвоить ответ [$истина]
34:   конец
35:   если (Есть_в_квадрате? (вычислить + $результат [высота] 1 )  [ширина] [объект] )
36:     присвоить ответ [$истина]
37:   конец
38:
39:   присвоить $результат [ответ]
40: возврат
41:
42: функция Чувство высота ширина
43:   память локальный чувство  
44:   присвоить чувство {}
45:
46: * Проверка попытки выхода за границу мира вампуса
47:   если (память существует $результат "МИР;[высота];[ширина]" )
48:         * Блеск золота
49:     если (Есть_в_квадрате? [высота] [ширина] золото )
50:        множество или чувство $ блеск
51:     конец
52:
53:         * Чувство ветерка
54:     если (Есть_в_окрестности? [высота] [ширина] яма )
55:        множество или чувство $ ветерок
56:     конец
57:
58:         * Чувство неприятного запаха
59:     если (Есть_в_окрестности? [высота] [ширина] вампус )
60:        множество или чувство $ запах
61:     конец
62:   иначе
63:     присвоить чувство удар
64:   конец
65:
66:   присвоить $результат [чувство]
67:   >Чувство в [высота] [ширина] = [чувство]
68: возврат  
69:
70: функция Создать_мир_вампуса  
71:   память локальный индекс_высота индекс_ширина количество_ям количество
72:
73:   список сгенерить СПИСОК_ВЫСОТА 1 [МИР_ВЫСОТА]
74:   список сгенерить СПИСОК_ШИРИНА 1 [МИР_ШИРИНА]
75:
76:   для индекс_высота [СПИСОК_ВЫСОТА]
77:     для индекс_ширина [СПИСОК_ШИРИНА]
78:       присвоить "МИР;[индекс_высота];[индекс_ширина]" {}
79:     следующий
80:   следующий
81:
82:     * Координаты вампуса
83:   список ВыбратьСлучайный индекс_высота  [СПИСОК_ВЫСОТА]
84:   список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА]
85:   если "[индекс_высота];[индекс_ширина]" == 1;1
86:     увеличить индекс_ширина
87:   конец
88:   множество или "МИР;[индекс_высота];[индекс_ширина]"  [МИР;[индекс_высота];[индекс_ширина]] вампус
89:
90:     * Координаты золота
91:   список ВыбратьСлучайный индекс_высота  [СПИСОК_ВЫСОТА]
92:   список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА]
93:   если "[индекс_высота];[индекс_ширина]" == 1;1
94:     увеличить индекс_ширина
95:   конец
96:   множество или "МИР;[индекс_высота];[индекс_ширина]"  [МИР;[индекс_высота];[индекс_ширина]] золото
97:
98:     * Координаты ям
99:   вычислить округлить количество_ям (вычислить * $результат [МИР_ВЫСОТА] [МИР_ШИРИНА] 0,2 )
100:   присвоить количество 0
101:   пока [количество] < [количество_ям]
102:     список ВыбратьСлучайный индекс_высота  [СПИСОК_ВЫСОТА]
103:     список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА]
104:     если "[индекс_высота];[индекс_ширина]" != 1;1
105:       если (множество и $результат [МИР;[индекс_высота];[индекс_ширина]] яма ) != яма
106:         множество или "МИР;[индекс_высота];[индекс_ширина]"  [МИР;[индекс_высота];[индекс_ширина]] яма
107:         увеличить количество      
108:       конец
109:     конец
110:   цикл
111:
112:     * Координаты стрелка
113:   множество или МИР;1;1 [МИР;1;1] стрелок
114: возврат
115:
116: функция Показать_мир_вампуса  
117:   память локальный индекс_высот индекс_ширина
118:   для индекс_высота [СПИСОК_ВЫСОТА]
119:     для индекс_ширина [СПИСОК_ШИРИНА]
120:       Рисовать_квадрат [индекс_высота] [индекс_ширина]
121:       >[индекс_высота] [индекс_ширина] = [МИР;[индекс_высота];[индекс_ширина]]
122:     следующий
123:   следующий
124: возврат
125:
126: функция Рисовать_квадрат высота ширина
127:   память локальный х1 у1 х2 у2 цвет
128:   вычислить *  х1  [ширина] 100
129:   вычислить *  у1  (вычислить - $результат [МИР_ВЫСОТА] [высота] ) 100
130:   увеличить у1 100
131:   вычислить +  х2  [х1] 100
132:   вычислить +  у2  [у1] 100
133:
134:   присвоить цвет [цвет_пусто]
135:   если (множество и $результат [МИР;[высота];[ширина]] яма )
136:     присвоить цвет [цвет_ямы]
137:   конец
138:   если (множество и $результат [МИР;[высота];[ширина]] золото )
139:     присвоить цвет [цвет_золота]
140:   конец
141:   если (множество и $результат [МИР;[высота];[ширина]] стрелок )
142:     присвоить цвет [цвет_стрелка]
143:   конец
144:   если (множество и $результат [МИР;[высота];[ширина]] вампус )
145:     присвоить цвет [цвет_вампуса]
146:   конец
147:   присвоить $ЦветКисти [цвет]
148:
149:   рисовать прямоугольник [х1] [у1] [х2] [у2]
150:   рисовать текстВПрямоугольнике [х1] [у1] (вычислить + $результат [х1] 35 ) (вычислить + $результат [у1] 20 ) "[высота],[ширина]"
151:   если [МИР;[высота];[ширина]] != {}
152:     рисовать текстВПрямоугольнике [х1] [у1] [х2] [у2] (строка заменитьСимволы $результат [МИР;[высота];[ширина]] ';' ' ' )
153:   конец
154: возврат
155:
156: Создать_мир_вампуса  
157: Показать_мир_вампуса  
158: Чувство 2 2